package com.java.base.exercise.util;

import java.util.Objects;

/**
 * @Author RenPu
 * @Date 2024/2/4 13:39
 * @Version 1.0
 * @Description:
 **/
public class SingleDemo {

    private static SingleDemo singleDemo=null;

    private SingleDemo(){}


    /**
     *
     * @return
     */
    public static synchronized   SingleDemo getSingleDemo(){
     if(Objects.isNull(singleDemo)) {
         singleDemo = new SingleDemo();
         return singleDemo;
     }
     return singleDemo;
    }


    /**
     *  单例模式：懒汉式 DCL:Double Check Lock的写法
     * @return
     */
    public static SingleDemo getSingleDemoT(){
        if(Objects.isNull(singleDemo)) {
            synchronized (SingleDemo.class){
                if(Objects.isNull(singleDemo)){
                    singleDemo = new SingleDemo();
                    return singleDemo;
                }
            }
        }
        return singleDemo;
    }

//
    public void yyyt(){}


    public static void main(String[] args) {


        for (int i = 0; i < 10; i++) {
            SingleDemo singleDemo = SingleDemo.getSingleDemoT();
            System.out.println(singleDemo);
        }

    }

}
